package es.uned.etsii.si3.taller;

import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
import java.sql.SQLException;
import java.util.List;

@DatabaseTable(tableName = "provincias")
public
class Provincia extends Persistente {
	public static final String NOMBRE_FIELD_NAME = "nombre";

	@DatabaseField(generatedId = true)
	int id;
	@DatabaseField(width = 40, index = true)
	String nombre;

	/**
	 * Crea un objeto tipo provincia a partir del nombre dado
	 * @param nombre
	 * @return el objeto creado
	 * @throws SQLException
	 */
	public
	static Provincia crear(String nombre) throws SQLException {
		Provincia provincia = new Provincia();

		provincia.setNombre(nombre);
		getClassDao(Provincia.class).create(provincia);

		return provincia;
	}

	/**
	 * Devuelve una lista de provincias para uso en los drop-down de los formularios
	 * 
	 * @return una lista de provincias con un primer elemento nulo
	 * @throws SQLException
	 */
	static public List<Provincia> hacerListaProvincias() throws SQLException {
		List<Provincia> lista = FactoriaDAO.getDao(Provincia.class)
			       .queryBuilder()
			       .orderBy(Provincia.NOMBRE_FIELD_NAME, true)
			       .query();
		Provincia nula = new Provincia();
		nula.setNombre("-----------");
		lista.add(0, nula);
		
		return lista;
	}

	public
	Provincia() {
		// ORM Lite necesita un constructor por defecto
	}

	/**
	 * getters y setters
	 */
	public int    getId()     { return id; }
	public String getNombre() { return nombre; }

	public
	void setNombre(String nombre) {
		this.nombre = nombre;
	}
}
